package br.com.novagalvao.DAO;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Order;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.com.novagalvao.beans.Contato;
import br.com.novagalvao.repositorio.ContatoRepositorio;

@Component
@Transactional
public class ContatoDAO implements ContatoRepositorio{

	private SessionFactory sf;
	
	@Autowired
	public ContatoDAO(SessionFactory factory) {
		this.sf = factory;
	}
	
	private Session getSession(){
		return sf.getCurrentSession();
	}
	
	public void salvar(Contato contato){
		getSession().save(contato);		
	}
	
	
	public void editar(Contato contato){
		getSession().update(contato);		
	}
	
	
	public Contato getById(int id){
		return (Contato) getSession().get(Contato.class, id);
	}

	public List<Contato> listar() {
		
		Criteria crit = getSession().createCriteria(Contato.class, "c");
		crit.addOrder(Order.asc("c.nomeContato"));
		
		return crit.list();
	}


	public void excluir(Contato contato) {
		getSession().delete(contato);
	}
	

	
}
